﻿using System.Data;
using System.Data.Odbc;


namespace crm.model
{
    public class OportunidadeDao : Conexao
    {
        Conexao c = new Conexao();

        public bool inserirOportunidade(Oportunidade obj)
        {
            colParams.Clear();
            string query = "insert into oportunidades(fkidempresas, fkidcontatos, fkidprodutos, descricao, data_contato, fkidfases, fkidcampanhas, fkidusuarios, fkidstatus) values (?,?,?,?,?,?,?,?,?);";
            colParams.Add(new OdbcParameter("@fkidempresas", obj.FkIdEmpresas));
            colParams.Add(new OdbcParameter("@fkidcontatos", obj.FkIdContatos));
            colParams.Add(new OdbcParameter("@fkidprodutos", obj.FkIdProdutos));
            colParams.Add(new OdbcParameter("@descricao", obj.Descricao));
            colParams.Add(new OdbcParameter("@datacontato", obj.DataContato));
            colParams.Add(new OdbcParameter("@fkidfases", obj.FkIdFases));
            colParams.Add(new OdbcParameter("@fkidcampanhas", obj.FkIdCampanhas));
            colParams.Add(new OdbcParameter("@fkidusuarios", obj.FkIdUsuarios));
            colParams.Add(new OdbcParameter("@fkidstatus", obj.Status));
            return c.Executar(query, colParams);
        }

        public DataTable consultar()
        {
            string query = "select * from vw_oportunidades;";
            return c.ExecutarConsulta(query);
        }

        public DataTable consultar(int id)
        {
            colParams.Clear();
            string query = "select * from oportunidades where idoportunidades = ?;";
            colParams.Add(new OdbcParameter("@idoportunidades", id));
            return c.ExecutarConsulta(query, colParams);
        }

        public DataTable carregarOpAG()
        {
            string query = "select idoportunidades, emp.nome empresa, p.nome produto, c.nome contato, f.nome fase, st.status situacao from oportunidades as o inner join empresas as emp on o.fkidempresas = emp.idempresas inner join produtos as p on o.fkidprodutos = p.idprodutos inner join contatos as c on o.fkidcontatos = c.idcontatos inner join fases as f on o.fkidfases = f.idfases inner join status as st on o.fkidstatus = st.idstatus where  o.fkidstatus = 0 or o.fkidstatus = 3 order by emp.nome;";
            return c.ExecutarConsulta(query);
        }
        public DataTable carregarOpAP()
        {
            string query = "select idoportunidades, emp.nome empresa, p.nome produto, c.nome contato, f.nome fase, st.status situacao from oportunidades as o inner join empresas as emp on o.fkidempresas = emp.idempresas inner join produtos as p on o.fkidprodutos = p.idprodutos inner join contatos as c on o.fkidcontatos = c.idcontatos inner join fases as f on o.fkidfases = f.idfases inner join status as st on o.fkidstatus = st.idstatus where  o.fkidstatus = 0 or o.fkidstatus = 4 order by emp.nome;";
            return c.ExecutarConsulta(query);
        }
        public DataTable carregarOpGP()
        {
            string query = "select idoportunidades, emp.nome empresa, p.nome produto, c.nome contato, f.nome fase, st.status situacao from oportunidades as o inner join empresas as emp on o.fkidempresas = emp.idempresas inner join produtos as p on o.fkidprodutos = p.idprodutos inner join contatos as c on o.fkidcontatos = c.idcontatos inner join fases as f on o.fkidfases = f.idfases inner join status as st on o.fkidstatus = st.idstatus where  o.fkidstatus = 3 or o.fkidstatus = 4 order by emp.nome;";
            return c.ExecutarConsulta(query);
        }
        public DataTable carregarOpAGP()
        {
            string query = "select idoportunidades, emp.nome empresa, p.nome produto, c.nome contato, f.nome fase, st.status situacao from oportunidades as o inner join empresas as emp on o.fkidempresas = emp.idempresas inner join produtos as p on o.fkidprodutos = p.idprodutos inner join contatos as c on o.fkidcontatos = c.idcontatos inner join fases as f on o.fkidfases = f.idfases inner join status as st on o.fkidstatus = st.idstatus where o.fkidstatus = 0 or  o.fkidstatus = 3 or o.fkidstatus = 4 order by emp.nome;";
            return c.ExecutarConsulta(query);
        }
        public DataTable carregarOpG()
        {
            string query = "select idoportunidades, emp.nome empresa, p.nome produto, c.nome contato, f.nome fase, st.status situacao from oportunidades as o inner join empresas as emp on o.fkidempresas = emp.idempresas inner join produtos as p on o.fkidprodutos = p.idprodutos inner join contatos as c on o.fkidcontatos = c.idcontatos inner join fases as f on o.fkidfases = f.idfases inner join status as st on o.fkidstatus = st.idstatus where o.fkidstatus = 3  order by emp.nome;";
            return c.ExecutarConsulta(query); ;

        }
        public DataTable carregarOpP()
        {
            string query = "select idoportunidades, emp.nome empresa, p.nome produto, c.nome contato, f.nome fase, st.status situacao from oportunidades as o inner join empresas as emp on o.fkidempresas = emp.idempresas inner join produtos as p on o.fkidprodutos = p.idprodutos inner join contatos as c on o.fkidcontatos = c.idcontatos inner join fases as f on o.fkidfases = f.idfases inner join status as st on o.fkidstatus = st.idstatus where  o.fkidstatus = 4  order by emp.nome;";
            return c.ExecutarConsulta(query);
        }

        public bool atualizar(Oportunidade obj)
        {
            string query = "update oportunidades set descricao= ?, data_contato = ?, fkidempresas = ? , fkidcontatos = ? , fkidprodutos = ?,   fkidfases = ? , fkidcampanhas = ?, fkidusuarios = ?   where idoportunidades = ?;";
            colParams.Add(new OdbcParameter("@descricao", obj.Descricao));
            colParams.Add(new OdbcParameter("@data_contato", obj.DataContato));
            colParams.Add(new OdbcParameter("@fkidempresas", obj.FkIdEmpresas));
            colParams.Add(new OdbcParameter("@fkidcontatos", obj.FkIdContatos));
            colParams.Add(new OdbcParameter("@fkidprodutos", obj.FkIdProdutos));
            colParams.Add(new OdbcParameter("@fkidfases", obj.FkIdFases));
            colParams.Add(new OdbcParameter("@fkidcampanhas", obj.FkIdCampanhas));
            colParams.Add(new OdbcParameter("@fkidusuarios", obj.FkIdUsuarios));
            colParams.Add(new OdbcParameter("@idoportunidades", obj.IdOportunidades));
            
            return c.Executar(query, colParams);
        }

        public bool finalizarOportunidade(Oportunidade obj)
        {
            string query = "update oportunidades set fkidstatus = ?, data_finalizacao = ? , descricao_oportunidade_finalizado = ?  where idoportunidades = ?;";
            colParams.Add(new OdbcParameter("@fkidstatus", obj.Status));
            colParams.Add(new OdbcParameter("@data_finalizacao", obj.DataFinalizacao));
            colParams.Add(new OdbcParameter("@descricao_oportunidade_finalizado", obj.DescricaoFinalizado));
            colParams.Add(new OdbcParameter("@idoportunidades", obj.IdOportunidades));
            return c.Executar(query, colParams);
        }



    }
}
